home *** CD-ROM | disk | FTP | other *** search
/ 64'er 1990 January / 64er_Magazin_90-01_1990_Markt__Technik_de_Side_A.d64 / sub dir sys 1.2 (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  12KB  |  556 lines

  1. 100 rem ******************
  2. 110 rem *                *
  3. 120 rem * sub dir system *
  4. 130 rem * 64'er 2/89 s36 *
  5. 140 rem ******************
  6. 150 rem
  7. 160 rem (c) 1988 by
  8. 170 rem dirk jansen
  9. 180 rem
  10. 190 rem ver 1.1 - 21.07.88
  11. 200 rem ==================
  12. 210 :
  13. 220 print chr$(147)
  14. 230 print tab(13);"sub dir system"
  15. 240 print
  16. 250 print tab(13);"v1.1  21.07.88"
  17. 260 print
  18. 270 print tab(8);"(c) 1988 by dirk jansen"
  19. 280 print
  20. 282 print tab(5);"enlarged 1989 by horst stieler"
  21. 284 print
  22. 290 print"========================================"
  23. 300 gosub 4000:rem * geraete nummern abfragen
  24. 310 nu$=chr$(0): restore: for i=0 to 7: read by$: next i
  25. 312 d0$=str$(0)+str$(5)+str$(35)
  26. 314 d1$=""
  27. 316 for i=1 to 17: read by: d1$=d1$+str$(by): next i
  28. 318 read by
  29. 320 d2$=""
  30. 322 for i=19 to 22: read by: d2$=d2$+str$(by): next i
  31. 324 read by
  32. 326 d3$=""
  33. 328 for i=24 to 35: read by: d3$=d3$+str$(by): next i
  34. 329 restore
  35. 330 gosub 44650
  36. 332 dim fe$(29),ft$(4),fs$(3)
  37. 334 ft$(0)="del": ft$(1)="seq": ft$(2)="prg": ft$(3)="usr": ft$(4)="rel"
  38. 335 dim ba(35,4)
  39. 340 print chr$(147)
  40. 350 print"***** sub dir system v 1.1 *****"
  41. 360 print
  42. 370 print "geraet:";u,"laufwerk: ";d$
  43. 380 print:print
  44. 390 print" 1 - sub dir system anlegen"
  45. 400 print
  46. 410 print" 2 - sub dir anlegen"
  47. 420 print
  48. 430 print" 3 - disk befehl"
  49. 440 print
  50. 450 print" 4 - inhaltsverzeichnis"
  51. 460 print
  52. 470 print" 5 - geraete nummern aendern"
  53. 480 print
  54. 481 print" 6 - directorys listen/drucken"
  55. 482 print
  56. 483 print" 7 - diskette validieren"
  57. 484 print
  58. 485 print" 8 - sub dir loeschen"
  59. 486 print
  60. 490 print" 0 - programm ende"
  61. 500 print:print
  62. 510 input"ihre wahl";o
  63. 520 on o+1 gosub 1000,10000,20000,2000,3000,4000,41050,41420,42000
  64. 530 goto 340
  65. 970 :
  66. 980 rem *** ende ***
  67. 990 :
  68. 1000 sys 64738
  69. 1970 :
  70. 1980 rem *** disk befehl ***
  71. 1990 :
  72. 2000 print
  73. 2010 poke 198,3
  74. 2020 poke 631,34
  75. 2030 poke 632,20
  76. 2040 poke 633,34
  77. 2050 a$=""
  78. 2060 input"befehl";a$
  79. 2070 open 15,u,15
  80. 2080 if a$="" then 2200
  81. 2090 print#15,a$
  82. 2200 print
  83. 2210 print"status: ";
  84. 2220 get#15,e$: if e$<>chr$(13) then printe$;: goto 2220
  85. 2230 close15
  86. 2240 print:print:print"- taste druecken -"
  87. 2250 get a$: if a$="" then 2250
  88. 2260 return
  89. 2970 :
  90. 2980 rem *** inhaltsverzeichnis ***
  91. 2990 :
  92. 3000 print
  93. 3010 open 1,u,0,"$"+d$
  94. 3020 poke 781,1
  95. 3040 get#1,a$,a$
  96. 3050 get#1,a$,a$: if st=64 then 3110
  97. 3060 : get#1,a$,b$:printchr$(157);asc(a$+chr$(0))+256*asc(b$+chr$(0));
  98. 3070 : get#1,a$:print a$;: if a$<>"" then 3070
  99. 3080 : print
  100. 3090 goto 3050
  101. 3110 close 1
  102. 3120 print:print:print"- taste druecken -"
  103. 3130 get a$: if a$="" then 3130
  104. 3140 return
  105. 3970 :
  106. 3980 rem *** geraete nummern aendern ***
  107. 3990 :
  108. 4000 print
  109. 4010 input"geraete nummer? 8[157][157][157]";u
  110. 4020 if u<8 or u>15 then 4010
  111. 4030 input"laufwerk      ? 0[157][157][157]";d$
  112. 4040 if d$<>"0" and d$<>"1" then 4030
  113. 4050 return
  114. 9970 :
  115. 9980 rem *** system anlegen ***
  116. 9990 :
  117. 10000 open 15,u,15,"i"+d$
  118. 10010 input#15,e1,e2$,e3,e4
  119. 10020 if e1=0 then 10100
  120. 10030 print
  121. 10040 print"*** disk: ";e1;e2$;e3;e4;"***"
  122. 10050 print
  123. 10060 return
  124. 10100 open 2,u,2,"#"
  125. 10110 print#15,"u1 2 ";d$;" 18 1"
  126. 10112 for i=2 to 226 step 32
  127. 10120 : print#15,"b-p 2";i
  128. 10130 : get#2,t$
  129. 10150 : if t$<>"" then 10170
  130. 10160 next i
  131. 10162 print#15,"b-p 2 0"
  132. 10164 get#2,t$
  133. 10166 if t$="" then 10220
  134. 10170 : print
  135. 10180 : print"*** disk ist nicht leer ***"
  136. 10190 : print
  137. 10200 : input"disk loeschen(j/n)? n[157][157][157]";a$
  138. 10210 : if a$="n" then close2:close15: return
  139. 10220 : print:print"impressum schreiben"
  140. 10222 print#15,"b-p 2 00"
  141. 10230 print#2,chr$(0);chr$(255);
  142. 10240 for i=0 to 7
  143. 10242 : print#15,"b-p 2";i*32+2
  144. 10250 : print#2,chr$(195);chr$(18);chr$(0);
  145. 10260 : read a$
  146. 10270 : print#2,left$(a$+"[160][160][160][160][160][160][160][160][160][160][160][160][160][160][160]",16);
  147. 10280 : print#2,chr$(0);chr$(0);chr$(0);
  148. 10290 : print#2,"dirk";
  149. 10300 : print#2,chr$(0);chr$(0);
  150. 10310 : print#2,chr$(0);chr$(0);
  151. 10320 next i
  152. 10330 print#15,"u2 2 ";d$;" 18 01"
  153. 10340 print:print"root dir anlegen"
  154. 10350 close2
  155. 10360 close15
  156. 10370 n$="======root======":rem -nameuebergeben
  157. 10380 gosub 30000:rem - dir anlegen
  158. 10470 open15,u,15
  159. 10480 print:print"init disk"
  160. 10490 print#15,"i";d$
  161. 10500 print:print"validate disk"
  162. 10510 print#15,"v";d$
  163. 10520 close15
  164. 10530 return
  165. 10662 print#15,"b-p 2 0"
  166. 10664 get#2,t$
  167. 10666 if t$<>"" then 10180
  168. 12000 data " sub dir system "
  169. 12010 data "(w) '88 d.jansen"
  170. 12020 data "                "
  171. 12030 data "use disk command"
  172. 12040 data "   &xxxxxx to   "
  173. 12050 data "   change dir   "
  174. 12060 data "                "
  175. 12070 data " don't validate "
  176. 19970 :
  177. 19980 rem *** dir anlegen ***
  178. 19990 :
  179. 20000 print
  180. 20010 n$="":input"dir name (max 15 zeichen)";n$
  181. 20020 if len(n$)>15 or len(n$)<1 then 20010
  182. 20030 n1$=n$
  183. 20040 if len(n$)<16 then n$="="+n$+"=":goto 20040
  184. 20050 n$=left$(n$,16)
  185. 21000 print:print"dir anlegen"
  186. 21010 gosub 30000:rem - dir anlegen
  187. 21900 restore
  188. 21910 for i=0 to 7
  189. 21920 : read a$
  190. 21930 next i
  191. 22000 print:print"umschalt befehl anlegen t:";t;" s:";s
  192. 22010 open2,u,2,"&"+n1$+",u,w"
  193. 22020 print#2,chr$(0);chr$(5);:rem - startadresse
  194. 22030 print#2,chr$(35);:rem - anzahl bytes
  195. 22040 p=0
  196. 22050 for i=1 to 35
  197. 22060 : read a
  198. 22070 : if a=-1 then a=t
  199. 22080 : if a=-2 then a=s
  200. 22090 : p=p+a: if p>255 then p=p-255
  201. 22100 : print#2,chr$(a);
  202. 22110 next i
  203. 22120 p=p+5+35
  204. 22130 p=p-(255*int(p/256))
  205. 22140 print#2,chr$(p);
  206. 22150 close2
  207. 23000 print:print"umschalten"
  208. 23010 open15,u,15
  209. 23020 open 2,u,2,"#"
  210. 23030 print#15,"u1 2 ";d$;" 18 01"
  211. 23040 print#15,"b-p 2 0"
  212. 23050 get#2,t$,s$
  213. 23060 t=asc(t$+chr$(0))
  214. 23070 s=asc(s$+chr$(0))
  215. 23080 close2
  216. 23090 print#15,"&"+n1$
  217. 23100 close15
  218. 23900 restore
  219. 23910 for i=0 to 7
  220. 23920 : read a$
  221. 23930 next i
  222. 24000 print:print"rueckschalt befehl anlegen  t:";t;" s:";s
  223. 24010 open2,u,2,"&back,u,w"
  224. 24020 print#2,chr$(0);chr$(5);:rem - startadresse
  225. 24030 print#2,chr$(35);:rem - anzahl bytes
  226. 24040 p=0
  227. 24050 for i=1 to 35
  228. 24060 : read a
  229. 24070 : if a=-1 then a=t
  230. 24080 : if a=-2 then a=s
  231. 24090 : p=p+a: if p>255 then p=p-255
  232. 24100 : print#2,chr$(a);
  233. 24110 next i
  234. 24120 p=p+5+35
  235. 24130 p=p-(255*int(p/256))
  236. 24140 print#2,chr$(p);
  237. 24150 close2
  238. 25000 print:print"rueckschalten"
  239. 25010 open15,u,15
  240. 25020 print#15,"&back"
  241. 25030 close15
  242. 25040 return
  243. 29970 :
  244. 29980 rem *** dir anlegen ***
  245. 29990 :
  246. 30000 open15,u,15
  247. 30010 open 2,u,2,"#"
  248. 30020 print#15,"u1 2 ";d$;" 18 01"
  249. 30030 print#15,"b-p 2 0"
  250. 30040 get#2,t$
  251. 30050 t1=asc(t$+chr$(0))
  252. 30070 print#15,"b-a ";d$;" 18 00"
  253. 30080 input#15,a,a$,t,s
  254. 30090 print#15,"b-a ";d$;t;s
  255. 30100 print#15,"b-p 2 00"
  256. 30110 print#2,chr$(0);chr$(255);
  257. 30120 print#2,chr$(195);chr$(18);chr$(0);
  258. 30130 print#2,left$(n$+"[160][160][160][160][160][160][160][160][160][160][160][160][160][160][160][160]",16);
  259. 30140 print#2,chr$(0);chr$(0);chr$(0);
  260. 30150 print#2,"dir ";
  261. 30160 print#2,chr$(0);chr$(0);
  262. 30170 print#2,chr$(0);chr$(0);
  263. 30180 print#2,chr$(0);chr$(0);
  264. 30260 for i=34 to 253
  265. 30270 : print#2,chr$(0);
  266. 30280 next i
  267. 30300 print#15,"u2 2 ";d$;t;s
  268. 30310 if t1=18 then 30500
  269. 30320 : print#15,"u1 2 ";d$;" 18 01"
  270. 30330 : print#15,"b-p 2 0"
  271. 30340 : print#2,chr$(t);chr$(s);
  272. 30350 : print#15,"u2 2 ";d$;" 18 01"
  273. 30500 close15
  274. 30510 close2
  275. 30520 return
  276. 39970 :
  277. 39980 rem *** daten fuer & file ***
  278. 39990 :
  279. 40000 data 169,18,133,8,169,1,133,9,169,128,133,1,165,1,48,252,169,-1,141,0,4
  280. 40010 data 169,-2,141,1,4,169,144,133,1,165,1,48,252,96
  281. 41000 :
  282. 41010 rem *****************************
  283. 41020 rem * directorys listen/drucken
  284. 41030 rem *
  285. 41050 dr=b0
  286. 41060 print"ausgabe auch auf drucker ? (j/n)"
  287. 41070 get by$: if by$="" then 41070
  288. 41080 if by$<>"j" then 41140
  289. 41090 print"geraeteadresse (4/5) ?": by$=""
  290. 41100 get by$:if by$="" then 41100
  291. 41110 pr=val(by$): if pr>=4 and pr<=5 then dr=b1: open4,pr: goto 41140
  292. 41120 print"geraeteadresse ist nicht 4 oder 5": goto 41320
  293. 41140 he=1
  294. 41150 open15,u,15
  295. 41160 open2,u,2,"#"
  296. 41190 print#15,"u1 2 ";d$;" 18 0"
  297. 41200 print#15,"b-p 2 144"
  298. 41210 dn$="": for i=144 to 159: get#2,by$: dn$=dn$+by$: next i: get#2,by$,by$
  299. 41220 id$="": for i=162 to 166: get#2,by$: id$=id$+by$: next i
  300. 41230 ue$=" 0  "+chr$(34)+dn$+chr$(34)+" "+id$+"[146]"
  301. 41250 de=0
  302. 41260 gosub 42610
  303. 41280 print#15,"m-r"chr$(250)chr$(2)chr$(3)
  304. 41290 get#15,lo$,by$,hi$
  305. 41300 print 256*asc(hi$+nu$)+asc(lo$+nu$);" blocks free."
  306. 41310 if dr=b1 then print#4,256*asc(hi$+nu$)+asc(lo$+nu$);" blocks free."
  307. 41320 close 2
  308. 41330 close 15
  309. 41340 if dr=b1 then dr=b0: print#4: close 4
  310. 41350 gosub 2240
  311. 41360 return
  312. 41380 rem *****************************
  313. 41390 rem * diskette validieren
  314. 41400 rem *
  315. 41420 he=2
  316. 41430 open15,u,15
  317. 41440 open2,u,2,"#"
  318. 41480 print#15,"r:&back=&back"
  319. 41490 input#15,e1,by$,by,by
  320. 41500 if e1=62 then 41560
  321. 41510 print"working-directory ist nicht die root-"
  322. 41520 print"directory"
  323. 41530 close 2: gosub 2240: goto 41930
  324. 41560 for i=1 to 35
  325. 41570 for j=2 to 4
  326. 41580 ba(i,j)=255
  327. 41590 next j
  328. 41600 next i
  329. 41620 gosub 44480
  330. 41640 de=0
  331. 41650 gosub 42610
  332. 41680 print"berechnung der freien bloecke pro spur"
  333. 41690 for i=1 to 35
  334. 41700 ei=0
  335. 41710 for j=2 to 4
  336. 41720 dz=ba(i,j)
  337. 41730 dz=dz/2: if dz<>int(dz) then ei=ei+1
  338. 41740 dz=int(dz): if dz>0 then 41730
  339. 41750 next j
  340. 41760 ba(i,1)=ei: print".";
  341. 41770 next i
  342. 41790 close 2
  343. 41810 print: print"schreiben der bam"
  344. 41820 for i=1 to 35
  345. 41830 print#15,"m-w"chr$(4*i)chr$(7)chr$(2)chr$(ba(i,1))chr$(ba(i,2))
  346. 41840 print#15,"m-w"chr$(4*i+2)chr$(7)chr$(2)chr$(ba(i,3))chr$(ba(i,4))
  347. 41850 next i
  348. 41880 print#15,"m-w"chr$(14)chr$(0)chr$(2)chr$(18)chr$(0)
  349. 41890 print#15,"m-w"chr$(4)chr$(0)chr$(1)chr$(144)
  350. 41900 print#15,"m-r"chr$(4)chr$(0): get#15,by$: if by$=chr$(144) then 41900
  351. 41920 print#15,"i";d$
  352. 41930 close 15
  353. 41940 return
  354. 41960 rem *****************************
  355. 41970 rem * delete dir
  356. 41980 rem *
  357. 42000 open15,u,15
  358. 42010 open2,u,2,"#"
  359. 42020 get#2,by$: pn=asc(by$+nu$)
  360. 42040 input"zu loeschendes directory";di$
  361. 42050 di$="&"+di$
  362. 42060 if len(di$)>16 then print"name zu lang": gosub2240: goto 42480
  363. 42090 print"directory wechseln"
  364. 42100 print#15,di$
  365. 42110 input#15,e1,e2$,e3,e4
  366. 42120 if e1<>0 then print e1,e2$,e3,e4: gosub 2240: goto 42480
  367. 42210 an=1: de=1: ze=0: az=0: rk=0: ak=3
  368. 42220 gosub 43350
  369. 42230 if rk=0 then 42290
  370. 42240 print"subdirectory ist nicht leer"
  371. 42250 print#15,"&back"
  372. 42260 gosub 2240: goto 42480
  373. 42290 print"directoryueberschrift loeschen"
  374. 42300 print#15,"u1 2 ";d$;str$(t1);str$(s1)
  375. 42310 print#15,"m-w"chr$(2)chr$(pn+3)chr$(1)chr$(0)
  376. 42320 print#15,"u2 2 ";d$;str$(t1);str$(s1)
  377. 42350 print#15,"u1 2 ";d$;str$(t2);str$(s2)
  378. 42380 print"'&back'-datei loeschen"
  379. 42390 print#15,"s";d$;":&back,u"
  380. 42420 print"rueckschalten"
  381. 42430 print#15,"m-e"chr$(5)chr$(pn+3)
  382. 42450 print"subdirectoryeintrag loeschen"
  383. 42460 print#15,"s";d$;":";di$
  384. 42480 close 2
  385. 42490 close 15
  386. 42500 return
  387. 42520 rem *******************************************
  388. 42530 rem * directorys drucken / diskette validieren
  389. 42540 rem *
  390. 42610 if he=2 then ak=2: goto 42860
  391. 42620 ak=1: an=1
  392. 42660 print spc(de);ue$
  393. 42670 if dr=b1 then print#4,spc(de);ue$
  394. 42680 gosub 44770: if p3=b1 then 42790
  395. 42690 print spc(de);" weg: ";
  396. 42700 if dr=b1 then print#4,spc(de);" weg: ";
  397. 42710 for i=k3 to sp+1 step -1
  398. 42720 print mid$(sk$(i),6);
  399. 42730 if dr=b1 then print#4,mid$(sk$(i),6);
  400. 42740 if i>sp+1 then print"/";: if dr=b1 then print#4,"/";
  401. 42750 next i
  402. 42760 print: if dr=b1 then print#4
  403. 42790 tr=18: sc=1
  404. 42800 ze=0
  405. 42810 gosub 43350
  406. 42820 print: if dr=b1 then print#4
  407. 42860 tr=18: sc=1: ze=0
  408. 42870 sa=ak: if he=1 then ak=2
  409. 42880 gosub 43350
  410. 42890 ak=sa
  411. 42900 if rc=0 then 43100
  412. 42940 va$=chr$(tr)+chr$(sc)+chr$(ze)+chr$(nt)+chr$(ns)
  413. 42950 for i=1 to 16: z$=mid$(f$,i,1): ifz$<>"[160]"thenva$=va$+z$:rem shift-space!
  414. 42960 next i
  415. 42970 gosub 44850
  416. 42990 print#15,f$
  417. 43000 de=de+1
  418. 43010 an=1
  419. 43020 if he=1 then 42660
  420. 43050 gosub 44480
  421. 43060 an=1
  422. 43070 goto 42860
  423. 43100 gosub 44770
  424. 43110 if p3=b1 then f$="": return
  425. 43140 gosub 44940
  426. 43150 tr=asc(mid$(va$,1,1))
  427. 43160 sc=asc(mid$(va$,2,1))
  428. 43170 ze=asc(mid$(va$,3,1))
  429. 43180 nt=asc(mid$(va$,4,1))
  430. 43190 ns=asc(mid$(va$,5,1))
  431. 43230 print#15,"&back": de=de-1: an=0
  432. 43250 ze=ze+1
  433. 43260 goto 42870
  434. 43280 rem *****************************
  435. 43290 rem * alle directoryeintraege einer dir. abklappern
  436. 43300 rem *
  437. 43350 if an=0 then 43430
  438. 43360 if de=0 then 43430
  439. 43390 print#15,"u1 2 ";d$;" 18 1"
  440. 43400 get#2,tr$,sc$: tr=asc(tr$+nu$): sc=asc(sc$+nu$)
  441. 43430 print#15,"u1 2 ";d$;tr;sc
  442. 43450 get#2,nt$,ns$: nt=asc(nt$+nu$): ns=asc(ns$+nu$)
  443. 43480 print#15,"b-p 2 ";ze*32+2
  444. 43490 for i=0 to 29: get#2,fe$(i): next i
  445. 43520 on ak goto 43550,43730,43800
  446. 43550 if asc(fe$(0)+nu$)=0 then 43700
  447. 43560 bl=256*asc(fe$(29)+nu$)+asc(fe$(28)+nu$)
  448. 43570 f$=str$(bl)
  449. 43580 if bl<100 then f$=f$+" "
  450. 43590 if bl<10 then f$=f$+" "
  451. 43600 f$=f$+"  "+chr$(34)
  452. 43610 for j=3 to 18: f$=f$+fe$(j): next j
  453. 43620 f$=f$+chr$(34)+" "
  454. 43630 ft=asc(fe$(0)+nu$)
  455. 43640 if (ft and 2^7)=0 then f$=f$+"*": goto 43660
  456. 43650 f$=f$+" "
  457. 43660 f$=f$+ft$(ft and 3)
  458. 43670 if ft and 2^6 then f$=f$+"<"
  459. 43680 print spc(de);f$
  460. 43690 if dr=b1 then print#4,spc(de);f$
  461. 43700 goto 43980
  462. 43730 gosub 44080
  463. 43740 if rc=1 then return
  464. 43770 goto43980
  465. 43800 ft=asc(fe$(0)+nu$)
  466. 43810 if az>0 then 43880
  467. 43820 bl=256*asc(fe$(29)+nu$)+asc(fe$(28)+nu$)
  468. 43830 if ft<>195 or bl<>0 then rk=1: return
  469. 43850 t1=tr: s1=sc
  470. 43860 az=1
  471. 43870 goto 43980
  472. 43880 if ft=0 then 43980
  473. 43890 if ft<>131 then rk=1: return
  474. 43900 if az=2 then rk=1: return
  475. 43920 f$="": for j=3 to 18: f$=f$+fe$(j): next j
  476. 43930 iff$<>"&back[160][160][160][160][160][160][160][160][160][160][160]"thenrk=1:return
  477. 43940 t2=asc(fe$(1)+nu$)
  478. 43950 s2=asc(fe$(2)+nu$)
  479. 43960 az=2
  480. 43980 ze=ze+1
  481. 43990 if ze=8 and nt=0 then rc=0: return
  482. 44000 if ze=8 then tr=nt: sc=ns: ze=0: goto 43430
  483. 44010 goto 43480
  484. 44030 rem *****************************
  485. 44040 rem * test, ob eintrag directoryeintrag
  486. 44050 rem *
  487. 44080 rc=0
  488. 44090 if (asc(fe$(0)+nu$) and 131)<>131 then return
  489. 44100 if 256*asc(fe$(29)+nu$)+asc(fe$(28)+nu$)<>1 then return
  490. 44110 if fe$(3)<>"&" then return
  491. 44130 f$="": for i=3 to 18: f$=f$+fe$(i): next i
  492. 44140 if f$="&back[160][160][160][160][160][160][160][160][160][160][160]" then return: rem !! dies sind <shift><space>
  493. 44180 open3,u,3,f$+",u,r"
  494. 44190 fs$(0)=""
  495. 44200 for i=0 to 2: get#3,by$: fs$(0)=fs$(0)+str$(asc(by$+nu$)): next i
  496. 44210 p=0
  497. 44220 fs$(1)="": fs$(2)="": fs$(3)=""
  498. 44230 for i=1 to 35
  499. 44240 get#3,by$
  500. 44250 if (i=18) or (i=23) then 44280
  501. 44260 z=-(i>0 and i<18)-2*(i>18 and i<23)-3*(i>23 and i<36)
  502. 44270 fs$(z)=fs$(z)+str$(asc(by$+nu$))
  503. 44280 p=p+asc(by$+nu$)
  504. 44290 if p>255 then p=p-255
  505. 44300 next i
  506. 44310 get#3,by$
  507. 44320 close 3
  508. 44330 p=p+5+35
  509. 44340 p=p-(255*int(p/256))
  510. 44350 if p<>asc(by$+nu$) then return
  511. 44380 if d0$<>fs$(0) or d1$<>fs$(1) or d2$<>fs$(2) or d3$<>fs$(3) then return
  512. 44410 rc=1
  513. 44420 return
  514. 44440 rem *****************************
  515. 44450 rem * dir validieren & in der computerbam bloecke belegen
  516. 44480 print"validiere directory ";f$
  517. 44490 close 2
  518. 44500 print#15,"v";d$
  519. 44520 print#15,"m-r"chr$(4)chr$(7)chr$(140)
  520. 44530 for i=1 to 35
  521. 44540 get#15,by$,b2$,b3$,b4$
  522. 44550 ba(i,2)=ba(i,2) and asc(b2$+nu$)
  523. 44560 ba(i,3)=ba(i,3) and asc(b3$+nu$)
  524. 44570 ba(i,4)=ba(i,4) and asc(b4$+nu$)
  525. 44580 next i
  526. 44590 open2,8,2,"#"
  527. 44600 return
  528. 44620 rem *****************************
  529. 44630 rem * init-stack
  530. 44640 rem *
  531. 44650 k3=20
  532. 44660 dim sk$(k3)
  533. 44670 sp=k3
  534. 44680 b0=0
  535. 44690 b1=-1
  536. 44700 return
  537. 44720 rem *****************************
  538. 44730 rem * empty-stack
  539. 44760 rem *
  540. 44770 p3=b0
  541. 44780 if sp=k3 then p3=b1
  542. 44790 return
  543. 44810 rem *****************************
  544. 44820 rem * push
  545. 44840 rem *
  546. 44850 if sp<0 then print"stack overflow": close 2: close 15: end
  547. 44860 sk$(sp)=va$
  548. 44870 sp=sp-1
  549. 44880 return
  550. 44900 rem *****************************
  551. 44910 rem * pop
  552. 44930 rem *
  553. 44940 sp=sp+1
  554. 44950 va$=sk$(sp)
  555. 44960 return
  556.